大嫌いなmavenのリポジトリの依存関係を可視化する
概要
maven、
pom.xmlが偏在しててムカつきます。
.svnと同じ愚を冒している気がしてなりません。
でもいいの、、、わたしにはGradleがあるもの、、!!
とはいえ仕事なんで、内容とか問題があれば見なきゃいけないんですが、
手で開いてると発狂するので、ツールで見る事にします。
使う形式
graphml形式を使います。
http://graphml.graphdrawing.org/
この形式を選んだ理由は、近所に知ってる奴が居たから。
自分が気に入ってるビューアは下記
gephi
mavenでgraphml形式で依存をoutput
mvn dependency:tree -DoutputType=graphml -DoutputFile=dependency.graphml
で、指定したフォルダに dependency.graphml ファイルが出来てる筈です。
読ませようとするとエラー
上記ファイルをgephiで開こうとすると、
Content is not allowed in prolog.
とか言われます。saxパーサでエラーが出てる。
で、ファイル見てみたら、saxパーサで読むとは思えないデータ形式。
こんな感じ
org.codehaus.mojo:XXX:XXX
+- org.apache.maven:maven-project:jar:2.0.9:compile
| +- org.apache.maven:maven-settings:jar:2.0.9:compile
| +- org.apache.maven:maven-profile:jar:2.0.9:compile
| +- org.apache.maven:maven-artifact-manager:jar:2.0.9:compile
| | +- org.apache.maven:maven-repository-metadata:jar:2.0.9:compile
| | \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:compile
| \- org.apache.maven:maven-plugin-registry:jar:2.0.9:compile
…
ただ、mavenでの実行自体にエラーは出ていない。
カンで、「もしかしてバージョンあるんじゃね?」って思って、
バージョン指定する下記設定をpom.xmlのbuildブロックに書き足した。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.2</version>
</plugin>
完成図
出力されたファイルはxmlっぽくなってて、gephiで開くと下記みたいな。
今後
Gradle版も出せるようにしたいです。そのうち探す。
参考にしたサイト
http://www.summa-tech.com/blog/2011/04/12/a-visual-maven-dependency-tree-view/
モロにバージョン指定について書いてあった。